#include <iostream>
#include <functional>
#include <string>

using std::cout;
using std::endl;
using std::string;
using std::function;
using std::bind;


class A
{
public:
    int a(int x, int y){return  x * y;}
};
// 熟悉lambda的语法结构，搞清楚lambda关于值捕获与引用捕获的区别，将上课的lambda表达式的代码自己写一写（不用交）

void test()
{
    // double d = 3.14;
    // string s = "huzhu";
    // [d](double div) mutable{
    //     ++d;
    //     cout << d * div << endl;
    // };

    typedef int(A::*ff)(int, int);
    using ff = int(A::*)(int, int);
    
    function<int(void)> f = bind(&A::a, A(), 10, 20);
    cout << f() << endl;
}


int main()
{
    test();
    return 0;
}






